Saltar al contenido principal

🚀 Proyecto: StarPy Logistics Corporation

Bienvenido, Cadete. Has sido contratado por StarPy Logistics, la empresa líder en transporte interplanetario. Tu misión es desarrollar el software para gestionar nuestra flota de naves y el tráfico en nuestro Puerto Espacial.

Este proyecto evaluará tus conocimientos en Programacion Orientada a Objetos (Clases, Herencia, Polimorfismo, Métodos Mágicos) y estructuras de datos en Python.


📋 Requisitos del Proyecto​

1. El Sistema de Naves (naves.py)​

Debes implementar una jerarquia de clases para representar nuestras naves.

Clase Base: Nave​

Todas las naves comparten estas características:

  • Atributos:
    • nombre: (str) Identificador de la nave.
    • nivel_combustible: (float) De 0 a 100. Inicialmente 100.
    • año_fabricacion: (int).
  • Métodos:
    • __init__: Constructor.
    • __str__: Debe devolver una cadena bonita con la info de la nave.
    • autonomia(): Devuelve la distancia máxima teórica. Por defecto: combustible * 100.
    • despegar(distancia): Comprueba si hay combustible suficiente para recorrer distancia. Si sí, reduce el combustible y devuelve True. Si no, imprime un error y devuelve False. Nota: El consumo base es 1 unidad de combustible por 1 unidad de distancia.
    • repostar(cantidad): Incrementa el combustible sin pasar de 100.

Subclase: Carguero​

Naves pesadas, lentas, pero con mucha capacidad.

  • Hereda de: Nave.
  • Atributos extra: carga_maxima (kg), carga_actual (kg).
  • Polimorfismo:
    • El método autonomia() aquí es diferente: las naves cargadas consumen más. Fórmula sugerida: (combustible * 100) - (0.5 * carga_actual).
  • Nuevo método: cargar(peso): Añade carga si no supera el máximo.

Subclase: Crucero​

Naves de lujo para turistas.

  • Hereda de: Nave.
  • Atributos extra: pasajeros_max (int).
  • Polimorfismo:
    • El método autonomia() es más eficiente por sus motores modernos. Fórmula: combustible * 200.
  • Métodos Mágicos:
    • Implementa __lt__ (menor que) para poder ordenar cruceros por año de fabicación (los más antiguos primero).

2. El Puerto Espacial (puerto.py)​

Necesitamos una clase PuertoEspacial para organizar el tráfico.

  • Atributos:

    • nombre: Nombre de la estación.
    • docks: Un diccionario que clasifica las naves aparcadas.
      • Clave: Tipo de nave ("Carga", "Pasajeros", "Mantenimiento").
      • Valor: Una lista de objetos Nave.
      • Ejemplo: {"Carga": [nave1, nave2], "Pasajeros": [nave3]}
  • Métodos:

    • recibir_nave(nave, tipo): Añade la nave a la lista correspondiente en el diccionario docks.
    • mostrar_tablero(): Recorre el diccionario e imprime qué naves hay en cada sección del puerto.
    • inspeccion_flota(año_limite): Devuelve una lista con todas las naves (de cualquier tipo) que sean anteriores al año_limite.

3. Programa Principal (main.py)​

Crea un script que simule un día de trabajo:

  1. Instancia un PuertoEspacial.
  2. Crea varias naves (Cargueros y Cruceros) con distintos datos.
  3. Ingresa las naves en el puerto usando recibir_nave.
  4. Muestra el estado del puerto (mostrar_tablero).
  5. Simula un despegue: Intenta hacer despegar un carguero muy pesado para ver si falla por falta de autonomía.
  6. Busca naves antiguas para "jubilarlas" usando inspeccion_flota.

🌟 Puntos Extra (Opcional)​

  • Validaciones: Que no se pueda tener combustible negativo.
  • Ordenación: Usa sort() para ordenar la lista de Cruceros por antigüedad aprovechando el __lt__.

¡Buena suerte, Comandante! 👩‍🚀